package com.dai.nettyserve.netty.manager;

import io.netty.channel.ChannelHandlerContext;

import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException;

/**
 * 存放网络开关控制器 的ChannelHandlerContext
 * @author 代 2019-04-01 15:55
 *
 */
public class SessionManager {

    private static final Map<String, ChannelHandlerContext> ctxs = Collections.synchronizedMap(new HashMap<String, ChannelHandlerContext>());
    private static final Map<ChannelHandlerContext, String> gprsNos = Collections.synchronizedMap(new HashMap<ChannelHandlerContext, String>());

    public static void putSession(String devno, ChannelHandlerContext ctx) {
        ctxs.put(devno, ctx);
        gprsNos.put(ctx, devno);
    }




    public static ChannelHandlerContext getCtx(String devno) {
        return ctxs.get(devno);
    }

    public static String getGprsNo(ChannelHandlerContext ctx) {
        return gprsNos.get(ctx);
    }

    public static void removeSession(String devno, ChannelHandlerContext ctx) throws IOException, TimeoutException {
        ctxs.remove(devno);
        gprsNos.remove(ctx);
    }



    /**
     * @return 在线会话数量
     */
    public static int getCount() {
        return ctxs.size();
    }

    public static Map<String, ChannelHandlerContext> getSessions() {
        return ctxs;
    }

}
